//引入express

var express = require('express');
var bodyParser = require('body-parser')
var md5 = require('md5-node')

var app = new express()
app.use(bodyParser.urlencoded({
    extended: false
}))

// parse application/json
app.use(bodyParser.json())

var session = require('express-session');

app.use(session({
        secret: 'keyboard cat',
        resave: false,
        saveUninitialized: true,
        cookie: {
            maxAge: 100 * 60 * 30
        },
        rolling: true
    })

)







//ejs 使用ejs模板引擎,默认找 views 这个目录
app.set('view engine', 'ejs')
//配置public为静态资源目录

app.use(express.static('public'))









//自定义中间件,判断登录状态

app.use(function (req, res, next) {


    if (req.url == '/login' || req.url == '/dologin' || req.url=='/reg') {
        next()
    } else {
        if (session.userinfo && session.userinfo != '') {
            //ejs 设置全局数据.所有页面都可以显示
            app.locals['userinfo']=session.userinfo
            next()
            
        } else {
            res.redirect('/login')
        }
    }



})


app.get('/', function (req, res) {
    res.send("index")
})

app.get('/login', function (req, res) {
    // res.send("login")
    res.render('login')
})

app.get('/reg', function (req, res) {
    // res.send("login")
    res.render('reg')

})

app.post('/doreg', function (req, res) {
    console.log(req.body)
    MongoClient.connect(url, function (err, db) {
      
        if (err) {
            console.log(err)
            return
        }
        var r=req.body;
        db.collection('user').insert(r, function(err,records){
            if (err) throw err;
            console.log('创建成功');
            // ###像这样，放在会调里关闭连接
            db.close();
        });
       

    })
})





app.post('/dologin', function (req, res) {
    console.log(req.body)
    var username=req.body.username;
    var password=md5(req.body.password) //登陆的时候要对用户的密码进行验证
    //1.获取数据
    MongoClient.connect(url, function (err, db) {
        if (err) {
            console.log(err)
            return
        }
        var result =db.collection('user').find({
            username:username,
            password:password,
        })


        //遍历数据库的第一种方法
        // var list=[]
        // result.each(function(err,doc){
        //     if(err){
        //         console.log(err)
        //     }else{
        //         if(doc!=null){
        //             list.push(doc)
        //         }else{
        //             console.log(list)
        //             db.close()
        //         }
        //     }

        // })

        //遍历数据库的第二种方法
        result.toArray(function (err, data) {
            if (err) {
                console.log(err)
                return
            } else {
                if (data.length > 0) {
                    console.log("登陆成功")
                    //保存用户信息
                    session.userinfo = data[0]

                    // res.send("<script>alert('登录成功');location.href='/product'</script>")
                    res.redirect('/product') //登录成功,跳转到product页面
                } else {
                    console.log("登录失败")
                    res.send("<script>alert('登录失败');location.href='/login'</script>")
                }
                db.close();
            }


        })


    })


    //2.链接数据库
})

app.get('/product', function (req, res) {
    // res.send("product")

    //连接数据库进行查询;

    MongoClient.connect(url, function (err, db) {
      
        if (err) {
            console.log(err)
            return
        }

        var result=db.collection('product').find();

        result.toArray(function(err,data){
            if(err) {
                console.log(err)
                return 
            }
            db.close()
            console.log(data)
            res.render('product',{
                list:data
            })

        })

       
       

    })











})

app.get('/productadd', function (req, res) {
    res.render("productadd")
})

app.get('/productedit', function (req, res) {
    // res.send("商品编辑")
    res.render('productedit')
})

app.get('/productdelte', function (req, res) {
    res.send("产品删除")
})


app.get('/loginout', function (req, res) {
    // 第一种
    // res.cookie.maxAge=0;
    // res.redirect('/login')
    // console.log('退出登录成功')

    //第二种方法

    req.session.destroy(function(err) {
        if(err){
            console.log(err)
        }
        res.redirect('/login')
        console.log('退出登录成功')
      })

})


app.listen(3333, '127.0.0.1')